//
// Created by Administrator on 2022/1/8.
//
#include <stdio.h>

#define ARRAY_LENGTH 5
//全局变量数组未初始化时，都会赋一个值为初始值
int global_array[ARRAY_LENGTH];

int main(void) {
    //直接赋值
    int array[ARRAY_LENGTH] = {0, 1, 2, 1, 4,};
    int array2[ARRAY_LENGTH];
    //循环赋值
    for (int i = 0; i < ARRAY_LENGTH; ++i) {
        array2[i] = ARRAY_LENGTH - i;
        printf("array[%d]=%d\n", i, array[i]);
        printf("array2[%d]=%d\n", i, array2[i]);
    }
    //不赋值的话默认就是初始值，根据类型不同初始值也不一样
    double array3[] = {1.1, 2.2, 1.5};
    for (int i = 0; i < ARRAY_LENGTH; ++i) {
        printf("array3[%d]=%f\n", i, array3[i]);
    }
    //指定下标赋值: [下标]=value;不赋值的话默认就是初始值，根据类型不同初始值也不一样
    double array4[] = {[2]=1.2, [0]=1.6};
    for (int i = 0; i < ARRAY_LENGTH; ++i) {
        printf("array4[%d]=%f\n", i, array4[i]);
    }
    //打印时发现array4[4]==array3[4]
    //发现两个变量地址相同
    printf("array3[0] address: %p\n", &(array3[0]));
    printf("array4[4] address: %p\n", &(array4[4]));


    //温馨提示:
    // 1.在使用某一个变量之前，一定要进行初始化，可赋为初始值
    // 2.不确定某一变量是否为何值时，尽量先把它置空(特别是容器)

    //局部变量数组未初始化时，只开辟内存，数组的所有值都是乱的不可以直接使用。如下代码
    int array5[ARRAY_LENGTH];
    printf("%p\n", &array5);
    for (int i = 0; i < ARRAY_LENGTH; ++i) {
        printf("%d\n", array5[i]);
    }

    //全局变量数组未初始化时，数组的每一项都会赋值为初始值
    for (int i = 0; i < ARRAY_LENGTH; ++i) {
        printf("%d\n", global_array[i]);
    }
    return 0;
}